/**
 * 
 */
package kr.co.insoft.driver.model;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import kr.co.insoft.driver.util.NullExcludeTransformer;
import flexjson.JSONSerializer;

/**
 * @author IN-SOFT Inc. GoodwillDD(sylee@in-soft.co.kr)
 * 
 */
public class VolumeModel implements Serializable {
	/**
	 * 
	 */
	private static final long serialVersionUID = -1130426638935965940L;

	String volumeId;
	Integer size;
	String snapshotId;
	String availabilityZone;
	String state;
	Date createTime;
	String volumeType;
	Integer iops;
	List<? extends VolumeAttachmentModel> attachments;

	public String toString() {
		return (new JSONSerializer())
				.transform(new NullExcludeTransformer(), void.class)
				.exclude("*.class").deepSerialize(this);
	}

	/**
	 * @return the volumeId
	 */
	public String getVolumeId() {
		return volumeId;
	}

	/**
	 * @param volumeId
	 *            the volumeId to set
	 */
	public void setVolumeId(String volumeId) {
		this.volumeId = volumeId;
	}

	/**
	 * @return the size
	 */
	public Integer getSize() {
		return size;
	}

	/**
	 * @param size
	 *            the size to set
	 */
	public void setSize(Integer size) {
		this.size = size;
	}

	/**
	 * @return the snapshotId
	 */
	public String getSnapshotId() {
		return snapshotId;
	}

	/**
	 * @param snapshotId
	 *            the snapshotId to set
	 */
	public void setSnapshotId(String snapshotId) {
		this.snapshotId = snapshotId;
	}

	/**
	 * @return the availabilityZone
	 */
	public String getAvailabilityZone() {
		return availabilityZone;
	}

	/**
	 * @param availabilityZone
	 *            the availabilityZone to set
	 */
	public void setAvailabilityZone(String availabilityZone) {
		this.availabilityZone = availabilityZone;
	}

	/**
	 * @return the state
	 */
	public String getState() {
		return state;
	}

	/**
	 * @param state
	 *            the state to set
	 */
	public void setState(String state) {
		this.state = state;
	}

	/**
	 * @return the createTime
	 */
	public Date getCreateTime() {
		return createTime;
	}

	/**
	 * @param createTime
	 *            the createTime to set
	 */
	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}

	/**
	 * @return the volumeType
	 */
	public String getVolumeType() {
		return volumeType;
	}

	/**
	 * @param volumeType
	 *            the volumeType to set
	 */
	public void setVolumeType(String volumeType) {
		this.volumeType = volumeType;
	}

	/**
	 * @return the iops
	 */
	public Integer getIops() {
		return iops;
	}

	/**
	 * @param iops
	 *            the iops to set
	 */
	public void setIops(Integer iops) {
		this.iops = iops;
	}

	/**
	 * @return the attachments
	 */
	public List<? extends VolumeAttachmentModel> getAttachments() {
		return attachments;
	}

	/**
	 * @param attachments
	 *            the attachments to set
	 */
	public void setAttachments(List<? extends VolumeAttachmentModel> attachments) {
		this.attachments = attachments;
	}
}
